package com.ingenio.siot.adapter;

import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import com.ingenio.siot.Adapter;
import com.ingenio.siot.entity.Movil;
import com.ingenio.siot.entity.Punto;
import com.mysql.jdbc.CallableStatement;
import com.mysql.jdbc.Connection;

public class MonitoreoAdapter extends Adapter{
	
	public List<Punto> devolverMonitoreo(String[] idsTipoMovil){
		Connection conn = null;
		CallableStatement callableStatement = null;
		String storeProc = "{call PosicionMoviles(?)}";
		List<Punto> puntos = new ArrayList<Punto>();
		MovilAdapter ma = new MovilAdapter();
		Movil m = null;
    	try {
			conn = (Connection) abrirConexion();
			String salida = null;
						
			salida = idsTipoMovil[0];
			for (int i = 1 ; i <= idsTipoMovil.length-1; i++) {
				salida = salida.concat(",");
				salida = salida.concat(idsTipoMovil[i]);		
			}
			
			callableStatement = (CallableStatement) conn.prepareCall(storeProc);
			callableStatement.setString(1, salida);
			ResultSet rs = callableStatement.executeQuery();
			Punto p = null;
			while(rs.next()) {
				Integer idMovil = rs.getInt("IdMovil");
				Double latitud = rs.getDouble("latitud");
				Double longitud = rs.getDouble("longitud");
				Timestamp ts = rs.getTimestamp("fechaObservacion");
				m = ma.devolverMovil(idMovil, conn);
				p = new Punto(null, latitud, longitud, m.getDescMovil(), m.getPatente());
				p.setId_movil(idMovil);
				p.setFecha(ts);
				puntos.add(p);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
    		cerrarConexion(conn);
    	}
    	return puntos;
	}

}

